package cn.com.doone.common.uc.web.dao;

import java.util.List;
import java.util.Map;

import cn.com.doone.common.uc.service.dto.UserInfo;

public interface UserInfoDao {

	/**
	 * 验证用户字段
	 * @param paramsMap
	 * @return
	 */
	public long countUserValid(Map<String,Object> paramsMap);
	
	/**
	 * 更新用户手机号码，并设置手机登录
	 * @param map
	 */
	public void updateMobilePhone(Map<String, Object> map);
	
	/**
	 * 添加用户
	 * @param userInfo
	 * @return
	 * @throws Exception
	 */
	public int addUserInfo(Map<String,Object> paramsMap);
	
	/**
	 * 更新东网通行证
	 * @param userInfo
	 * @return
	 * @throws Exception
	 */
	public int updateDooneCode(Map<String,Object> paramsMap);
	
	/**
	 * 修改用户信息
	 * @param userInfo
	 * @return
	 * @throws Exception
	 */
	public int updateUserInfo(Map<String,Object> paramsMap);
	
	/**
	 * 修改用户账号
	 * @param paramsMap
	 * @return
	 */
	public int updateUserAccountByUserInfoId(Map<String,Object> paramsMap);
	
	/**
	 * 通过用户账号修改用户信息
	 * @param userInfo
	 * @return
	 */
	public int updateUserInfoByAccount(UserInfo userInfo);
	
	/**
	 * 修改用户信息
	 * @param params
	 * @return
	 */
	public int updateUserLockLevel(Map<String,Object> params);
	
	/**
	 * 根据userInfoId修改密码
	 * @param params
	 * @return
	 */
	public int changePasswordByUserInfoId(Map<String,Object> params) throws Exception;
	
	/**
	 * 查询未更新的用户
	 * @param groupCode
	 * @param updateTime
	 * @return
	 */
	public List<Map<String,Object>> queryUserByTenantAndUpdateTime(Map<String,Object> params);
	
	/**
	 * 根据userInfoId查询信息
	 * @param userInfoId
	 * @return
	 */
	public Map<String,Object> queryUserInfoByUserInfoId(String userInfoId);
	
	/**
	 * 根据手机号码查询用户信息
	 * @author cjf
	 * @param params
	 * @return
	 */
	public Map<String,Object> queryUserInfoByPhoneNum(Map<String,Object> params);
	
	/**
	 * 根据用户账号查询用户信息
	 * @author cjf
	 * @param params
	 * @return
	 */
	public Map<String,Object> queryUserInfoByUserAccount(Map<String,Object> params);
	
	/**
	 * 删除用户
	 * @param paramsMap
	 * @return
	 */
	public int deleteUserInfo(Map<String,Object> paramsMap);
	
	/**
	 * 批量删除用户
	 * @param userList
	 * @return
	 */
	public int batchDeleteUserInfo(List<Map<String,Object>> userList);
	
	/**
	 * 根据岗位查询人员列表
	 * @param paramsMap
	 * @return
	 */
	public List<Map<String,Object>> queryUserListByPost(Map<String,Object> paramsMap);
	
	/**
	 * 查询人员信息
	 * @param paramsMap
	 * @return
	 */
	public List<Map<String,Object>> queryUserInfoList(Map<String,Object> paramsMap);
	
	/**
	 * 统计人员信息
	 * @param paramsMap
	 * @return
	 */
	public long countUserInfoList(Map<String,Object> paramsMap);
	
	/**
	 * 查询人员分页列表
	 * @param paramsMap
	 * @return
	 */
	public List<Map<String,Object>> queryUserInfoPaegList(Map<String,Object> paramsMap);
	
	/**
	 * 根据组ID查询用户分页列表
	 * @param paramsMap
	 * @return
	 */
	public List<Map<String,Object>> queryUserInfoPageListByUserGroupId(Map<String,Object> paramsMap);
	
	/**
	 * 统计人员分页列表
	 * @param paramsMap
	 * @return
	 */
	public long countUserInfoPageList(Map<String,Object> paramsMap);
	
	/**
	 * 根据组ID统计人员分页列表
	 * @param paramsMap
	 * @return
	 */
	public long countUserInfoPageListByUserGroupId(Map<String,Object> paramsMap);
	
	/**
	 * 禁用启用用户
	 * @param paramsMap
	 * @return
	 */
	public int editUserStatus(Map<String,Object> paramsMap);
	
	/**
	 * 统计应用和人员是否有授权关系
	 * @param paramsMap
	 * @return
	 */
	public long countUserAppAuthz(Map<String,Object> paramsMap);
	
	/**
	 * 根据用户ID查询部门
	 * @param paramsMap
	 * @return
	 */
	public List<Map<String,Object>> queryGroupIdByUserInfoId(Map<String,Object> paramsMap);
}
